package com.zenithmind.user.utils;

import org.mindrot.jbcrypt.BCrypt;

public class PasswordUtils {
    /**
     * 对给定的密码进行加密处理
     * 该方法使用BCrypt库来哈希给定的密码，并添加盐值以增强安全性
     * 盐值是自动生成的，每次调用此方法都会生成不同的盐值，从而生成不同的哈希值
     *
     * @param password 明文密码，需要加密处理的原始密码
     * @return 加密后的密码，返回BCrypt算法处理后的哈希密码
     */
    public static String encryption(String password) {
        if (password == null) {
            return null;
        }
        return BCrypt.hashpw(password, BCrypt.gensalt());
    }

    /**
     * 比较用户输入的密码与存储在数据库中经过BCrypt加密的密码是否匹配
     * 此方法用于验证用户提供的密码是否与之前存储的加密密码一致它利用BCrypt库来执行密码检查
     *
     * @param password 用户输入的原始密码，未加密
     * @param encodedPassword 存储在数据库中的经过BCrypt加密的密码
     * @return 如果用户输入的密码与加密密码匹配，则返回true；否则返回false
     */
    public static boolean compare(String password, String encodedPassword) {
        if (password == null || encodedPassword == null) {
            return false;
        }
        try {
           return BCrypt.checkpw(password, encodedPassword);
        } catch (IllegalArgumentException e) {
           System.err.println("Error comparing password: " + e.getMessage());
           return false;
        } 
    }
} 